package pms.until;
import java.sql.*;

public class JDBCTools {
    //驱动类
    private static final String DRIVERNAME="com.mysql.cj.jdbc.Driver";
    //连接语句
    private static final String URL="jdbc:mysql://localhost:3306/pmsdbb?serverTimezone=Asia/Shanghai&characterEncoding=utf8";
    //用户名称
    private static final String USER="root";
    //密码
    private static final String PWD="root";
    //连接对象
    Connection con=null;
    //预编译语句对象
    PreparedStatement ps=null;
    //结果集对象
    ResultSet rs=null;


    /**
     * 获取连接对象的方法
     * @return
     */
    public Connection getCon(){
        try {
            Class.forName(DRIVERNAME);
            con=DriverManager.getConnection(URL,USER,PWD);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return con;
    }

    /**
     * 关闭数据库连接的方法
     */
    public void clossAll(){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ps!=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 增删改通用的方法
     * @param sql
     * @param obj
     * @return  受影响行数   大于0说明增删改成功 否则失败
     */
    public int update(String sql,Object...obj){
        //获取连接对象
        con=getCon();
        int result=0;
        try {
            //获取语句对象
            ps=con.prepareStatement(sql);
            if(obj!=null){
                for(int i=0;i<obj.length;i++){
                    ps.setObject(i+1,obj[i]);
                }
            }
            result=ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            clossAll();
        }
        return result;
    }

    /**
     * 查询的通用方法
     * @param sql
     * @param obj
     * @return  结果集对象  需要程序员自己遍历获取数据
     */
    public ResultSet query(String sql,Object...obj){
        //获取连接对象
        con=getCon();
        try {
            //获取语句对象
            ps=con.prepareStatement(sql);
            if(obj!=null){
                for(int i=0;i<obj.length;i++){
                    ps.setObject(i+1,obj[i]);
                }
            }
            rs=ps.executeQuery();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }


}
